#include <common.h>
#include <type.h>

#define VARTYPE(i) VarType::i
#define OPTYPE(i) OpType::i
#define RET(TYPE, i) case TYPE(i): return #i
#define DEFAULT(err_str) default: Panic(err_str)

std::string var_type_to_str(VarType var_type) {
  switch(var_type) {
    RET(VARTYPE, i32);
    RET(VARTYPE, f32);
    DEFAULT("var type undefined");
  }
}

std::string op_type_to_str(OpType op_type) {
  switch(op_type) {
    RET(OPTYPE, EEQ);
    RET(OPTYPE, NEQ);
    RET(OPTYPE, ADD);
    RET(OPTYPE, SUB);
    RET(OPTYPE, MUL);
    RET(OPTYPE, DIV);
    DEFAULT("op type undefined");
  }
}
